const db=wx.cloud.database();
const articles=db.collection('articles');
const comments=db.collection('comments');
const user=db.collection('user');
const poll=db.collection('poll');
const collection=db.collection('collection');
const follow=db.collection('follow');
const app=getApp();
const util=require('../../../utils/utils.js');
Page({
  /**
   * 页面的初始数据
   */
  data: {         
    article_id:null,             
    article:null,   
    articleContent:"", 
    poll_id:"",    
    pollColor:"",      
    pollNum:null,    
    isLike:false,   
    collect_id:"",
    collectColor:"",                 
    collectNum:null,
    isColl:false,
    showComment:true,   
    CommentContent:'', 
    show:false,
    flag:true,  //页面的flag
    followIcon:'plus',      
    isFollow:false,      
    follow_id:'',          //关注的作者的记录的id便于后面删除
    isMe:true              //初始化是否是我的文章
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.showToast({
      title: '数据加载中',
      icon: 'loading'
    });
    let id=options.id;
    this.setData({article_id:id}); 
    //获取用户的信息已经完成
     wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          wx.getUserInfo({
            success: res => {
              app.globalData.userInfo=res.userInfo;
              wx.cloud.callFunction({
                name:'getOpenid',
                complete:res=>{
                  app.globalData.openid=res.result.openid;
                  this.setData({
                    avatarUrl:app.globalData.userInfo.avatarUrl,
                    nickName:app.globalData.userInfo.nickName
                  });
                }
              })   
            }
          })
        }
      }
    }); 
    // 加载文章的收藏状态
    articles.where({_id:id}).get({
      success:res=>{
        this.setData({
          article:res.data[0],
          articleContent:res.data[0].content,
          pollNum:res.data[0].likeNum,
          collectNum:res.data[0].collectNum,
          flag:false
        }); 
        wx.cloud.callFunction({
          name:'getOpenid',
          complete:res=>{
            //点赞初始状态
            poll.where({
                like_id:this.data.article_id,
                _openid:res.result.openid
              }).get({
              success:res=>{
                if(res.data.length==1){
                  this.setData({
                    isLike:res.data[0].pollStatus,
                    pollColor:"#4487D6",
                    poll_id:res.data[0]._id
                  });
                }
              }
            });
            //收藏初始状态
            collection.where({
              collect_id:this.data.article_id,
              _openid:res.result.openid
            }).get({
              success:res=>{
                if(res.data.length==1){
                  this.setData({
                    isColl:res.data[0].collectStatus,
                    collectColor:"#4487D6",
                    collect_id:res.data[0]._id
                  });
                }
              }
            });
            if(app.globalData.openid!==this.data.article._openid){
              this.setData({
                isMe:false,      
              });
              follow.where({
                followAuthorId:this.data.article._openid,
                _openid:res.result.openid
              }).get({
               success:res=>{
                 if(res.data.length==1){
                  this.setData({
                    followIcon:'success',
                    isFollow:res.data[0].followStatus,     
                    follow_id:res.data[0]._id 
                  })
                  console.log(this.data.isFollow);
                  console.log(this.data.follow_id);
                 }
               }
             })
            }
          }
        });
      }
    });
    this.loadComment();//加载载评论
  },
/**
 * 自定义函数--------点击加关注
 */
followEvent:function(){
  if(!this.data.isFollow){
    this.follow();
  }else{
    this.cancelFollow();
  }
},
/**
 * 自定义函数-----------关注
 */
follow:function(){
  this.setData({
    followIcon:'success',
    isFollow:true
  });
 follow.add({
    data:{
      followAuthorId:this.data.article._openid,        
      followStatus:true                             
    }
  }).then(
    res=>{
      this.setData({
        follow_id:res._id
      })
    }
  )
},
/**
 * 自定义函数------------取消关注
 */
cancelFollow:function(){
  follow.doc(this.data.follow_id).remove({
    success:res=>{
      this.setData({
        followIcon:'plus',
        isFollow:false
      });
    },
    fail:res=>{
      console.log('取消关注失败'+err);
    }
  })
},
/**
 * 自定义函数---------加载收藏的信息
 */
loadCollect:function(){
  collection.where({
    collect_id:this.data.article_id,
    _openid:app.globalData.openid
  }).get({
    success:res=>{
      if(res.data.length==1){
        this.setData({
          isColl:this.article.collectStatus,
          collectColor:"#4487D6",
          collect_id:this.article._id
        });
      }
    }
  })
},
// 点击评论弹出层打开
showPopup:function(){
  this.setData({
    show:true
  })
},
// 点击弹出层关闭
onClose() {
  this.setData({show:false});
},
/**
 * 自定义函数-----只有登录了才有资格评论,所以用户点击发表的时候先判断是否存在并且添加用户信息
 */
onGetUserInfo:function(e){
  if (!app.globalData.logged && e.detail.userInfo) {
    let today=util.formatDate();
    app.globalData.logged=true;
    app.globalData.userInfo=e.detail.userInfo;
    wx.cloud.callFunction({
      name:'getOpenid',
      complete:res=>{
       app.globalData.openid=res.result.openid;
        user.add({
          data:{
             avatarUrl:e.detail.userInfo.avatarUrl,
             city:e.detail.userInfo.city,
             gender:e.detail.userInfo.gender,
             nickName:e.detail.userInfo.nickName,
             loginTime:today,
             userInfo:e.detail.userInfo,
             openid:res.result.openid
          },
          success:res=>{
           console.log('添加数据成功：'+res);
          },
          fail:err=>{
            console.log('添加数据失败：'+err);
          }
        })
      }
    })
  }
},
/**
 * 自定义函数--------------点赞功能
 */
viewPoll:function(){
  if(!this.data.isLike){
    this.isPoll();
  }else{
    this.cancelPoll();
  }
},
/**
 * 自定义函数-----------------------------------点赞增加1
 */
isPoll:function(){
  this.setData({
    pollColor:"#4487D6",
    isLike:true
  });
  poll.add({
    data:{
      like_id:this.data.article_id,
      likeTitle:this.data.article.title,
      likeDescribe:this.data.article.describe,
      likeNickName:this.data.article.nickName,
      likeAvatarUrl:this.data.article.avatarUrl,
      likecover:this.data.article.cover,
      pollStatus:this.data.isLike,
    },
    success:res=>{
      let id=this.data.article_id;
      let num=this.data.pollNum+1;
      articles.doc(id).update({
        data:{
          likeNum:num
        },
        success: res => {
          this.setData({
            pollNum: num
          })
        }
      });
      this.setData({
        poll_id: res._id
      });
    },
    fail:err=>{
      console.log('【点赞失败】'+err);
    }
  })
},
/**
 * 自定义函数----------------------------------点赞减少减1
 */
cancelPoll:function(){
    poll.doc(this.data.poll_id).remove({
      success: res => {
        this.setData({
          pollColor:"",
          isLike:false
        });
        let id=this.data.article_id;
        console.log(id);
        let num=this.data.pollNum-1;
        articles.doc(id).update({
          data:{
            likeNum:num
          },
          success: res => {
            this.setData({
            pollNum: num
            })
          }
        });
      },
      fail: err => {
        console.error('[数据库] [删除记录] 失败：', err)
      }
    })
},
/**
 * 自定义函数---------------收藏功能
 */
viewCollect:function(){
  if(!this.data.isColl){
    this.isCollect();
  }
  if(this.data.isColl){
    this.cancelCollect();
  }
},
/**
 * 自定义函数---------------------------收藏成功
 */
isCollect:function(){
  wx.cloud.callFunction({
    name:'getOpenid',
    complete:res=>{
      this.setData({
        collectColor:"#4487D6",
        isColl:true
      });
      collection.add({
        data:{
          collect_id:this.data.article_id,
          collectTitle:this.data.article.title,
          collectDescribe:this.data.article.describe,
          collectNickName:this.data.article.nickName,
          collectAvatarUrl:this.data.article.avatarUrl,
          collectcover:this.data.article.cover,
          collectStatus:this.data.isColl,
          },
        success:res=>{
          let id=this.data.article_id;
          let num=this.data.collectNum+1;
          articles.doc(id).update({
            data:{
              collectNum:num
            },
            success: res => {
              this.setData({
                collectNum:num
              })
            }
          });
          this.setData({
            collect_id: res._id
          });
        },
        fail:err=>{
          console.log('【收藏失败】'+err);
        }
      })
    }
  }); 
},
/**
 * 自定义函数---------------------------取消收藏
 */
cancelCollect:function(){
  collection.doc(this.data.collect_id).remove({
    success: res => {
      this.setData({
        collectColor:"",
        isColl:false
      });
      let id=this.data.article_id;
      let num=this.data.collectNum-1;
      articles.doc(id).update({
        data:{
          collectNum:num
        },
        success: res => {
          this.setData({
            collectNum: num
          })
        }
      });
    },
    fail: err => {
      console.error('[数据库] [删除记录] 失败：', err)
    }
  })
},
/**
 * 自定义函数----评论时候触发
 */
onCommentChange:function(e){
  this.setData({
    CommentContent:e.detail
  })
},
/**
 * 自定义函数-------点击按钮上传评论
 */
saveComment:function(){
  let today=util.formatDate();
  comments.add({
    data:{
      article_id:this.data.article_id,
      avatarUrl:app.globalData.userInfo.avatarUrl,//评论的用户信息，包含头像，昵称
      nickName:app.globalData.userInfo.nickName,
      showComment:true,//代表已经有评论了
      openid:app.globalData.openid,//当前评论的用户信息
      content:this.data.CommentContent,//评论内容
      time:today
    },
    success:res=>{
      wx.showToast({
        title: '评论成功',
      });
      this.setData({CommentContent:''});
      this.loadComment();
      },
    fail:err=>{
      wx.showToast({
        title: '添加失败哦！',
      })
    }
  })
},
/**
 * 自定义函数----加载评论
 */
loadComment:function(){
  comments.where({article_id:this.data.article_id}).get({
    success:res=>{
      this.setData({
        commentList:res.data
      });
      if(res.data.length!==0){
        this.setData({showComment:false});
        articles.doc(this.data.article_id).update({
          data:{
              commentNum:res.data.length
          },
          success:res=>{
            console.log('修改评论数量'+res.data);
          }
        })
      }
      wx.hideToast();
    }
  })
},
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    setTimeout(function(){
      wx.hideNavigationBarLoading()
      wx.stopPullDownRefresh() 
    },500);
    this.setData({
      loading: false,
    })
  }
})